1. Field of the Invention
The field of the invention is data processing, or, more specifically apparatus and methods for debugger audiation.
2. Description of Related Art
In the latter half of the twentieth century, there began a phenomenon known as the information revolution. While the information revolution is a historical development broader in scope than any one event or machine, no single device has come to represent the information revolution more than the digital electronic computer. The development of computer systems has surely been a revolution. Each year, computer systems grow faster, store more data, and provide more applications to their users.
A modern computer system typically comprises at least one central processing unit (CPU) and supporting hardware, such as communications buses and memory, necessary to store, retrieve and transfer information. It also includes hardware necessary to communicate with the outside world, such as input/output controllers or storage controllers, and devices attached thereto such as keyboards, monitors, tape drives, disk drives, communication lines coupled to a network, etc. The CPU or CPUs are the heart of the system. They execute the instructions which comprise a computer program and direct the operation of the other system components.
The overall speed of a computer system is typically improved by increasing parallelism, and specifically, by employing multiple CPUs (also referred to as processors). The modest cost of individual processors packaged on integrated circuit chips has made multiprocessor systems practical, although such multiple processors add more layers of complexity to a system.
From the standpoint of the computer's hardware, most systems operate in fundamentally the same manner. Processors are capable of performing very simple operations, such as arithmetic, logical comparisons, and movement of data from one location to another. But each operation is performed very quickly. Sophisticated software at multiple levels directs a computer to perform massive numbers of these simple operations, enabling the computer to perform complex tasks. What is perceived by the user as a new or improved capability of a computer system is made possible by performing essentially the same set of very simple operations, using software having enhanced function, along with faster hardware.
A programmer develops a software program by producing and entering source code into files using a text editor program. The computer then creates an executable program by translating the source code into machine code. The machine code is the rudimentary instructions understood by the computer. Illustratively, the foregoing software development process is accomplished by running a series of programs. These programs include a compiler for translating the source code into machine code and a linker to link the machine code together to form a program.
An important aspect of the design and development of a computer program is a process known as “debugging”. Debugging involves testing and evaluating the software to find and correct any errors and improper logic operations. Typically, a programmer uses another computer program commonly known as a debugger to debug a program under development. An effective debugger program is necessary for rapid and efficient development of software and typically provides functions including breakpoints, run-to-cursor, step into, step over, and the like.
A conventional debugging system comprises a combination of computer hardware and debugger software that executes a user's program in a controlled manner. Debugging aids a user in identifying and correcting mistakes in an authored program by allowing the program to be executed in small segments.
A debugging environment typically involves multiple windows on multiple screens which dynamically update as a developer steps through a program execution sequence and visually observes results. By way of example, there might be a source window containing the source code for the program being debugged, a watch window for displaying the current state of variety of program variables as the program executes, a console window for interacting with the running program, and a command window for providing a detailed history of each DLL and EXE file that has been loaded and executed. Any number of other windows may also be present, such as a disassembly window, register window, memory window, etc.
Visualizing the vast array information displayed on the multitude of windows during a typical debugging session can be a truly daunting task for those individuals having various degrees of visual impairments. Various mechanisms exist in the art to compensate for visual impairments to provide at least some degree of function to at least some visually impaired individuals. For example, for certain individuals with mild visual impairments, an output display of a digital device can be programmed to display information in a magnified form, or using special fonts, colors, or other characteristics, to make it easier for the visually impaired user to see.
As useful as these conventional mechanisms are, in general visually impaired individuals remain at a disadvantage vis-à-vis people of normal vision when it comes to using many textually intensive computer applications such as debuggers.
The large volumes of frequently changing text and data displayed during such sessions often necessitate small font sizes within the display windows, since several windows must be simultaneously displayed. Thus, magnifying characters within the display will come at the expense of the amount of information displayed. Since the information within the debugger windows is so dynamic, it is also cumbersome to constantly zoom in and zoom out in order to visualize the information displayed.
A need therefore exists for continued improvement to the way in which visually impaired persons interface with text and data intensive computer applications such as debuggers, and in particular to the way in which information from such a computer application is conveyed to a visually impaired user.